﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Autocentro.Entities;

namespace Autocentro.Respository
{
    public class TipoVehiculoRepository:MasterRepository,ITipoVehiculoRepository
    {

        public List<TIPO_VEHICULO> GetAllFromTipoVehiculoByEmpresaId(int empresaid)
        {
            var query = from c in context.TipoVehiculo
                            .Include("PRODUCTO_TIPO_VEHICULO")
                            .Include("PRODUCTO_TIPO_VEHICULO.PRODUCTO")
                            .Include("PRODUCTO_TIPO_VEHICULO.PRODUCTO.UNIDAD_MEDIDA")
                        where c.EmpresaId.Equals(empresaid)
                        select c;
            return query.ToList();
        }

        public List<TIPO_VEHICULO> GetFromTipoVehiculoByDescripcionAndEmpresaId(string criterio, int empresaid)
        {
            if (criterio != string.Empty)
            {
                var query = from c in context.TipoVehiculo
                                .Include("PRODUCTO_TIPO_VEHICULO")
                            .Include("PRODUCTO_TIPO_VEHICULO.PRODUCTO")
                            .Include("PRODUCTO_TIPO_VEHICULO.PRODUCTO.UNIDAD_MEDIDA")
                            where c.EmpresaId.Equals(empresaid) && c.Descripcion.ToUpper().Contains(criterio.ToUpper())
                            select c;
                return query.ToList();
            }
            else
            {
                var query = from c in context.TipoVehiculo
                                .Include("PRODUCTO_TIPO_VEHICULO")
                            .Include("PRODUCTO_TIPO_VEHICULO.PRODUCTO")
                            .Include("PRODUCTO_TIPO_VEHICULO.PRODUCTO.UNIDAD_MEDIDA")
                            where c.EmpresaId.Equals(empresaid)
                            select c;
                return query.ToList();
            }
        }

        public void AddTipoVehiculo(TIPO_VEHICULO tipovehiculo)
        {
            tipovehiculo.EMPRESA = null;
            context.TipoVehiculo.Add(tipovehiculo);
            context.SaveChanges();

        }

        public void UpdateTipoVehiculo(TIPO_VEHICULO tipovehiculo)
        {
            tipovehiculo.EMPRESA = null;
            context.Entry(tipovehiculo).State = System.Data.EntityState.Modified;
            context.SaveChanges();
        }


        public bool ExisteDuplicidad(string descripcion, int empresaid, int id)
        {
            var _empresaid = empresaid.ToString();

            var query = from t in context.TipoVehiculo
                        where (t.Descripcion.ToUpper().CompareTo(descripcion.ToUpper())) == 0  &&  (t.EmpresaId.CompareTo(empresaid) == 0) &&
                        t.Id != id 
                        select t;

            return query.Any();
        }


        public TIPO_VEHICULO GetFromTipoVehiculoById(int id)
        {
            var query = from c in context.TipoVehiculo
                        .Include("PRODUCTO_TIPO_VEHICULO")
                            .Include("PRODUCTO_TIPO_VEHICULO.PRODUCTO")
                            .Include("PRODUCTO_TIPO_VEHICULO.PRODUCTO.UNIDAD_MEDIDA")
                        where c.Id.Equals(id)
                        select c;
            return query.SingleOrDefault();
        }
    }
}
